package com.redpack.redpost.struts.form;

import java.rmi.RemoteException;
import java.util.ArrayList;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;

import com.redpack.redpost.struts.action.terminos;
import com.redpack.redpost.util.dao.UserDAO;
import com.redpack.redpost.util.to.generalUtil;
import com.redpack.vo.xsd.Guia;
import com.redpack.vo.xsd.IdDesc;
import com.redpack.ws.RedpackWSPortTypeProxy;

public class registroForm extends ActionForm {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L ;
	
	private String nombre ;
	private String apellidos ;
	private String razonSocial ;
	private String email ;
	private String emailConf ;
	private String consignado ;
	private String calle ;
	private String exterior ;
	private String interior ;
	private String referencias ;
	private String colonia ;
	private int cp ;
	private int acc ;
	private String ciudad ;
	private String estado ;
	private int lada_casa ;
	private int tel_casa ;
	private int lada_oficina ;
	private int tel_oficina ;
	private int lada_movil ;
	private int tel_movil ;
	private String usr ;
	private String pwd ;
	private String pwdConf ;
	private int servicio ;
	private int correspondencia ;
	private String frecuencia ;
	private int promociones ;
	private int seguro ;
	private int transferencia ;
	private int deposito ;
	private int paypal ;
	private int tarjeta ;
	private String titularDeTarjeta ;
	private String tipoTarjeta ;
	private int numeroTarjeta ;
	private int mesVencimiento ;
	private int anioVencimiento ;
	private int codigo ;
	private int notificacion ;
	private String comentarios ;
	private int privacidad ;
	private int condiciones ;
	
	private boolean dato_1 ;
	private boolean dato_2 ;
	private boolean dato_3 ;
	private boolean dato_4 ;
	private boolean dato_5 ;
	private boolean dato_6 ;
	private boolean dato_7 ;
	private boolean dato_8 ;
	private boolean dato_9 ;
	private boolean dato_10 ;
	private boolean dato_11 ;
	private boolean dato_12 ;
	private boolean dato_13 ;
	private boolean dato_14 ;
	private boolean dato_15 ;
	private boolean dato_16 ;
	private boolean dato_17 ;
	private boolean dato_18 ;
	private boolean dato_19 ;
	private boolean dato_20 ;
	private boolean dato_21 ;
	private boolean dato_22 ;
	private boolean dato_23 ;
	private boolean dato_24 ;
	private boolean dato_25 ;
	private boolean dato_26 ;
	private boolean dato_27 ;
	private boolean dato_28 ;
	private boolean dato_29 ;
	private boolean dato_30 ;
	private boolean dato_31 ;
	
	private String fp ;	
	private String ntt ;
	private String tt ;
	private String nt ;
	private int fvm ;
	private int fva ;
	private int cs ;
		
	public int getAcc() {
		return acc;
	}
	public void setAcc(int acc) {
		this.acc = acc;
	}
	public static long getSerialversionuid() {
		return serialVersionUID;
	}
	public String getNombre() {
		return nombre;
	}
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}
	public String getApellidos() {
		return apellidos;
	}
	public void setApellidos(String apellidos) {
		this.apellidos = apellidos;
	}
	public String getRazonSocial() {
		return razonSocial;
	}
	public void setRazonSocial(String razonSocial) {
		this.razonSocial = razonSocial;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public String getEmailConf() {
		return emailConf;
	}
	public void setEmailConf(String emailConf) {
		this.emailConf = emailConf;
	}
	public String getConsignado() {
		return consignado;
	}
	public void setConsignado(String consignado) {
		this.consignado = consignado;
	}
	public String getCalle() {
		return calle;
	}
	public void setCalle(String calle) {
		this.calle = calle;
	}
	public String getExterior() {
		return exterior;
	}
	public void setExterior(String exterior) {
		this.exterior = exterior;
	}
	public String getInterior() {
		return interior;
	}
	public void setInterior(String interior) {
		this.interior = interior;
	}
	public String getReferencias() {
		return referencias;
	}
	public void setReferencias(String referencias) {
		this.referencias = referencias;
	}
	public String getColonia() {
		return colonia;
	}
	public void setColonia(String colonia) {
		this.colonia = colonia;
	}
	public int getCp() {
		return cp;
	}
	public void setCp(int cp) {
		this.cp = cp;
	}
	public String getCiudad() {
		return ciudad;
	}
	public void setCiudad(String ciudad) {
		this.ciudad = ciudad;
	}
	public String getEstado() {
		return estado;
	}
	public void setEstado(String estado) {
		this.estado = estado;
	}
	public int getTel_casa() {
		return tel_casa;
	}
	public void setTel_casa(int tel_casa) {
		this.tel_casa = tel_casa;
	}
	public int getTel_oficina() {
		return tel_oficina;
	}
	public void setTel_oficina(int tel_oficina) {
		this.tel_oficina = tel_oficina;
	}
	public int getTel_movil() {
		return tel_movil;
	}
	public void setTel_movil(int tel_movil) {
		this.tel_movil = tel_movil;
	}
	public String getUsr() {
		return usr;
	}
	public void setUsr(String usr) {
		this.usr = usr;
	}
	public String getPwd() {
		return pwd;
	}
	public void setPwd(String pwd) {
		this.pwd = pwd;
	}
	public String getPwdConf() {
		return pwdConf;
	}
	public void setPwdConf(String pwdConf) {
		this.pwdConf = pwdConf;
	}
	public int getServicio() {
		return servicio;
	}
	public void setServicio(int servicio) {
		this.servicio = servicio;
	}
	public int getCorrespondencia() {
		return correspondencia;
	}
	public void setCorrespondencia(int correspondencia) {
		this.correspondencia = correspondencia;
	}
	public String getFrecuencia() {
		return frecuencia;
	}
	public void setFrecuencia(String frecuencia) {
		this.frecuencia = frecuencia;
	}
	public int getPromociones() {
		return promociones;
	}
	public void setPromociones(int promociones) {
		this.promociones = promociones;
	}
	public int getSeguro() {
		return seguro;
	}
	public void setSeguro(int seguro) {
		this.seguro = seguro;
	}
	public int getTransferencia() {
		return transferencia;
	}
	public void setTransferencia(int transferencia) {
		this.transferencia = transferencia;
	}
	public int getDeposito() {
		return deposito;
	}
	public void setDeposito(int deposito) {
		this.deposito = deposito;
	}
	public int getPaypal() {
		return paypal;
	}
	public void setPaypal(int paypal) {
		this.paypal = paypal;
	}
	public int getTarjeta() {
		return tarjeta;
	}
	public void setTarjeta(int tarjeta) {
		this.tarjeta = tarjeta;
	}
	public String getTitularDeTarjeta() {
		return titularDeTarjeta;
	}
	public void setTitularDeTarjeta(String titularDeTarjeta) {
		this.titularDeTarjeta = titularDeTarjeta;
	}
	public String getTipoTarjeta() {
		return tipoTarjeta;
	}
	public void setTipoTarjeta(String tipoTarjeta) {
		this.tipoTarjeta = tipoTarjeta;
	}
	public int getNumeroTarjeta() {
		return numeroTarjeta;
	}
	public void setNumeroTarjeta(int numeroTarjeta) {
		this.numeroTarjeta = numeroTarjeta;
	}
	public int getMesVencimiento() {
		return mesVencimiento;
	}
	public void setMesVencimiento(int mesVencimiento) {
		this.mesVencimiento = mesVencimiento;
	}
	public int getAnioVencimiento() {
		return anioVencimiento;
	}
	public void setAnioVencimiento(int anioVencimiento) {
		this.anioVencimiento = anioVencimiento;
	}
	public int getCodigo() {
		return codigo;
	}
	public void setCodigo(int codigo) {
		this.codigo = codigo;
	}
	public int getNotificacion() {
		return notificacion;
	}
	public void setNotificacion(int notificacion) {
		this.notificacion = notificacion;
	}
	public String getComentarios() {
		return comentarios;
	}
	public void setComentarios(String comentarios) {
		this.comentarios = comentarios;
	}
	public int getLada_casa() {
		return lada_casa;
	}
	public int getPrivacidad() {
		return privacidad;
	}
	public void setPrivacidad(int privacidad) {
		this.privacidad = privacidad;
	}
	public int getCondiciones() {
		return condiciones;
	}
	public void setCondiciones(int condiciones) {
		this.condiciones = condiciones;
	}
	public void setLada_casa(int lada_casa) {
		this.lada_casa = lada_casa;
	}
	public int getLada_oficina() {
		return lada_oficina;
	}
	public void setLada_oficina(int lada_oficina) {
		this.lada_oficina = lada_oficina;
	}
	public int getLada_movil() {
		return lada_movil;
	}
	public void setLada_movil(int lada_movil) {
		this.lada_movil = lada_movil;
	}
	public boolean getDato_1() {
		return dato_1;
	}
	public boolean getDato_2() {
		return dato_2;
	}
	public void setDato_2(boolean dato_2) {
		this.dato_2 = dato_2;
	}
	public boolean getDato_3() {
		return dato_3;
	}
	public void setDato_3(boolean dato_3) {
		this.dato_3 = dato_3;
	}
	public boolean getDato_4() {
		return dato_4;
	}
	public void setDato_4(boolean dato_4) {
		this.dato_4 = dato_4;
	}
	public boolean getDato_5() {
		return dato_5;
	}
	public void setDato_5(boolean dato_5) {
		this.dato_5 = dato_5;
	}
	public boolean getDato_6() {
		return dato_6;
	}
	public void setDato_6(boolean dato_6) {
		this.dato_6 = dato_6;
	}
	public boolean getDato_7() {
		return dato_7;
	}
	public void setDato_7(boolean dato_7) {
		this.dato_7 = dato_7;
	}
	public boolean getDato_8() {
		return dato_8;
	}
	public void setDato_8(boolean dato_8) {
		this.dato_8 = dato_8;
	}
	public boolean getDato_9() {
		return dato_9;
	}
	public void setDato_9(boolean dato_9) {
		this.dato_9 = dato_9;
	}
	public boolean getDato_10() {
		return dato_10;
	}
	public void setDato_10(boolean dato_10) {
		this.dato_10 = dato_10;
	}
	public boolean getDato_11() {
		return dato_11;
	}
	public void setDato_11(boolean dato_11) {
		this.dato_11 = dato_11;
	}
	public boolean getDato_12() {
		return dato_12;
	}
	public void setDato_12(boolean dato_12) {
		this.dato_12 = dato_12;
	}
	public boolean getDato_13() {
		return dato_13;
	}
	public void setDato_13(boolean dato_13) {
		this.dato_13 = dato_13;
	}
	public boolean getDato_14() {
		return dato_14;
	}
	public void setDato_14(boolean dato_14) {
		this.dato_14 = dato_14;
	}
	public boolean getDato_15() {
		return dato_15;
	}
	public void setDato_15(boolean dato_15) {
		this.dato_15 = dato_15;
	}
	public boolean getDato_16() {
		return dato_16;
	}
	public void setDato_16(boolean dato_16) {
		this.dato_16 = dato_16;
	}
	public boolean getDato_17() {
		return dato_17;
	}
	public void setDato_17(boolean dato_17) {
		this.dato_17 = dato_17;
	}
	public boolean getDato_18() {
		return dato_18;
	}
	public void setDato_18(boolean dato_18) {
		this.dato_18 = dato_18;
	}
	public boolean getDato_19() {
		return dato_19;
	}
	public void setDato_19(boolean dato_19) {
		this.dato_19 = dato_19;
	}
	public boolean getDato_20() {
		return dato_20;
	}
	public void setDato_20(boolean dato_20) {
		this.dato_20 = dato_20;
	}
	public boolean getDato_21() {
		return dato_21;
	}
	public void setDato_21(boolean dato_21) {
		this.dato_21 = dato_21;
	}
	public boolean getDato_22() {
		return dato_22;
	}
	public void setDato_22(boolean dato_22) {
		this.dato_22 = dato_22;
	}
	public boolean getDato_23() {
		return dato_23;
	}
	public void setDato_23(boolean dato_23) {
		this.dato_23 = dato_23;
	}
	public boolean getDato_24() {
		return dato_24;
	}
	public void setDato_24(boolean dato_24) {
		this.dato_24 = dato_24;
	}
	public boolean getDato_25() {
		return dato_25;
	}
	public void setDato_25(boolean dato_25) {
		this.dato_25 = dato_25;
	}
	public boolean getDato_26() {
		return dato_26;
	}
	public void setDato_26(boolean dato_26) {
		this.dato_26 = dato_26;
	}
	public boolean getDato_27() {
		return dato_27;
	}
	public void setDato_27(boolean dato_27) {
		this.dato_27 = dato_27;
	}
	public boolean getDato_28() {
		return dato_28;
	}
	public void setDato_28(boolean dato_28) {
		this.dato_28 = dato_28;
	}
	public boolean getDato_29() {
		return dato_29;
	}
	public void setDato_29(boolean dato_29) {
		this.dato_29 = dato_29;
	}
	public boolean getDato_30() {
		return dato_30;
	}
	public void setDato_30(boolean dato_30) {
		this.dato_30 = dato_30;
	}
	public boolean getDato_31() {
		return dato_31;
	}
	public void setDato_31(boolean dato_31) {
		this.dato_31 = dato_31;
	}
	public void setDato_1(boolean dato_1) {
		this.dato_1 = dato_1;
	}
	
	public String getFp() {
		return fp;
	}
	public void setFp(String fp) {
		this.fp = fp;
	}
	public String getNtt() {
		return ntt;
	}
	public void setNtt(String ntt) {
		this.ntt = ntt;
	}
	public String getTt() {
		return tt;
	}
	public void setTt(String tt) {
		this.tt = tt;
	}
	public String getNt() {
		return nt;
	}
	public void setNt(String nt) {
		this.nt = nt;
	}
	public int getFvm() {
		return fvm;
	}
	public void setFvm(int fvm) {
		this.fvm = fvm;
	}
	public int getFva() {
		return fva;
	}
	public void setFva(int fva) {
		this.fva = fva;
	}
	public int getCs() {
		return cs;
	}
	public void setCs(int cs) {
		this.cs = cs;
	}
			
	public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
		
		ActionErrors errors = new ActionErrors() ;
		
		HttpSession session = request.getSession( ) ;
		String idioma = "";
		
		request.setAttribute("privacidad", ""+privacidad);
		request.setAttribute("condiciones", ""+condiciones);
		request.setAttribute("notificacion", ""+notificacion);
		request.setAttribute("comentarios", comentarios);
		request.setAttribute("seguro", ""+seguro);
		request.setAttribute("cs", ""+cs);
		request.setAttribute("fvmSel", ""+fvm);
		request.setAttribute("fvaSel", ""+fva);
		request.setAttribute("tt", tt);
		
		if( cp != 0 ){
			ArrayList colonias = new ArrayList( ) ;
			String municipio = "";
//			colonia.clear();
	    	if( cp != 0 ){
		    	String CP = Integer.toString( cp );
		    	Guia[] guias = new Guia[1];
		        Guia guiaAux = new Guia();
		        RedpackWSPortTypeProxy proxy = new RedpackWSPortTypeProxy();
		        guias[0] = guiaAux;
		        com.redpack.vo.xsd.Direccion dir = new com.redpack.vo.xsd.Direccion();
		        dir.setCodigoPostal( Integer.valueOf( CP ) );
		        guiaAux.setRemitente(dir);
		        try {
					guias = proxy.busquedaCodigoPostal("QA Lurp6/9CVIHl9Ademqs6xCAlUHKsQB72", Integer.valueOf("1"), guias);
				} catch (NumberFormatException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (RemoteException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
		        IdDesc[] res = null;
		        res = guias[0].getAuxiliar();
		        for(int i = 0;i<res.length;i++){
		              if(res[i] != null){
		            	  colonias.add( res[i].getDescripcion() ) ;
		            	  estado = res[i].getEquivalencia();
		            	  municipio = res[i].getAuxiliar(0);
		              }
		        }
	    	}else{
	    		estado = "";
	    		municipio = "";
	    	}
	    	
	    	request.setAttribute("colonia", colonia) ;
	    	request.setAttribute("colonias", colonias) ;
		    request.setAttribute("estado", estado) ;
		    request.setAttribute("ciudad", municipio) ;
		}
		
	
		if (session.getAttribute("idioma") != null && session.getAttribute("idioma") != ""){
			idioma = session.getAttribute("idioma").toString();
	
		}
		
		if( acc != 2 ){

			if( nombre == null || nombre.trim( ).length( ) == 0 ) {
				
				errors.add("NombreVacio", new ActionMessage("com.redpack.redpost.web.errors.modules.registro.nombre"+idioma));
				return errors ;
			}
			
			if( apellidos == null || apellidos.trim( ).length( ) == 0 ) {
				
				errors.add("apellidosVacio", new ActionMessage("com.redpack.redpost.web.errors.modules.registro.apellidos"+idioma));
				return errors ;
			}
			
			if( email == null || email.trim( ).length( ) == 0 ) {
				errors.add("emailVacio", new ActionMessage("com.redpack.redpost.web.errors.modules.registro.email"+idioma));
				return errors ;
			}else if ( !generalUtil.validateEmail(email) ) {
	        	
	        	errors.add("emailNoValido", new ActionMessage("com.redpack.redpost.web.errors.modules.registro.emailNoValido"+idioma));
				return errors ;
	        }else if( emailConf == null || emailConf.trim( ).length( ) == 0 ) {
				
				errors.add("emailConf", new ActionMessage("com.redpack.redpost.web.errors.modules.registro.emailConf"+idioma));
				return errors ;
				
			}else if( !email.equals( emailConf ) ) {
				
				errors.add("emailNoCheca", new ActionMessage("com.redpack.redpost.web.errors.modules.registro.emailNoCheca"+idioma));
				return errors ;
			}else{
				try {
					boolean exits = UserDAO.findUserByEmail( email );
					if( exits ){
						errors.add("usrExits", new ActionMessage("com.redpack.redpost.web.errors.modules.registro.emailExits"+idioma));
			
						return errors ;
					}
				} catch (Exception e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			
			if( consignado == null || consignado.trim( ).length( ) == 0 ) {
				
				errors.add("consignadoVacio", new ActionMessage("com.redpack.redpost.web.errors.modules.registro.consignado"+idioma));
				return errors ;
			}
			
			if( calle == null || calle.trim( ).length( ) == 0 ) {
				
				errors.add("calleVacio", new ActionMessage("com.redpack.redpost.web.errors.modules.registro.calle"+idioma));
				return errors ;
			}
			
			if( exterior == null || exterior.trim( ).length( ) == 0 ) {
				
				errors.add("numeroVacio", new ActionMessage("com.redpack.redpost.web.errors.modules.registro.numero"+idioma));
	
				return errors ;
			}
			
			if( cp == 0 ) {
				
				errors.add("cpVacio", new ActionMessage("com.redpack.redpost.web.errors.modules.registro.cp"+idioma));
		
				return errors ;
			}
			
			if( colonia == null || colonia.trim( ).length( ) == 0 ) {
				
				errors.add("Vacio", new ActionMessage("com.redpack.redpost.web.errors.modules.registro.colonia"+idioma));
				
			}
			
			if( tel_casa == 0 ) {
				
				errors.add("telVacio", new ActionMessage("com.redpack.redpost.web.errors.modules.registro.tel"+idioma));
		
				return errors ;
			}
			
			if( lada_casa == 0 ) {
				
				errors.add("telVacio", new ActionMessage("com.redpack.redpost.web.errors.modules.registro.lada"+idioma));
		
				return errors ;
			}
			
			if( usr == null || usr.trim( ).length( ) == 0 ) {
				
				errors.add("usrVacio", new ActionMessage("com.redpack.redpost.web.errors.modules.registro.usr"+idioma));
		
				return errors ;
				
			}else{
				
				try {
					boolean exits = UserDAO.findByUser( usr );
					if( exits ){
						errors.add("usrExits", new ActionMessage("com.redpack.redpost.web.errors.modules.registro.usrExits"+idioma));
			
						return errors ;
					}
				} catch (Exception e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				
			}
			
			if( pwd == null || pwd.trim( ).length( ) == 0 ) {
				
				errors.add("pwdVacio", new ActionMessage("com.redpack.redpost.web.errors.modules.registro.pwd"+idioma));
	
				return errors ;
			}
			
			if( pwd.trim( ).length( ) < 6 ) {
				
				errors.add("pwdLongitud", new ActionMessage("com.redpack.redpost.web.errors.modules.registro.pwdLongitud"+idioma));
	;
				return errors ;
			}
			
			if( pwdConf == null || pwdConf.trim( ).length( ) == 0 ) {
				
				errors.add("pwdConfVacio", new ActionMessage("com.redpack.redpost.web.errors.modules.registro.pwdConf"+idioma));
	
				return errors ;
			}		
			
			
			if( !pwd.equals( pwdConf ) ) {
				
				errors.add("pwdNoChecaVacio", new ActionMessage("com.redpack.redpost.web.errors.modules.registro.pwdNoCheca"+idioma));
	
				return errors ;
			}
			
			if( servicio == 0  ) {
				
				errors.add("servicioVacio", new ActionMessage("com.redpack.redpost.web.errors.modules.registro.servicio"+idioma));
	
				return errors ;
			}
			
			if( fp != null && !fp.equals("") ){
				if( fp.equals("Tarjeta") ){
					
					if( ntt.equals("") || tt.equals("") || nt.equals("") || fvm == 0 || fva == 0 || cs == 0 ){
						
						errors.add("dataTarjeta", new ActionMessage("com.redpack.redpost.web.errors.modules.registro.datosTarjeta"+idioma));
						
						return errors ;
						
					}
					
				}
			}
			
			if( privacidad == 0  ) {
				
				errors.add("privacidadVacio", new ActionMessage("com.redpack.redpost.web.errors.modules.registro.privacidad"+idioma));
	
				return errors ;
			}
			
			
			if( condiciones == 0  ) {
				
				errors.add("condicionesVacio", new ActionMessage("com.redpack.redpost.web.errors.modules.registro.condiciones"+idioma));
	
				return errors ;
			}
			
		}
		
		return errors ;
	}
	
	


	

}
